﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Biblioteca.Utils;
using Biblioteca.Objetos;
using SEG.Utils;
using Biblioteca.DataBase;
using System.Data.Common;
using SEG.Objetos;
using System.Collections.Generic;
using Pms.Utils;


namespace SEG
{
    public partial class UsuarioEmpresaGrupo : System.Web.UI.Page
    {
        Usuario usuAut;
        char permManut;
        string codUsu;
        string cod_emp;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session.Count == 0)
                Response.Redirect("~/Login.aspx");
            else
            {
                usuAut = (Usuario)Session["usuario"];
                char perm = BiblioPMS.VerifiquePermissao("USUARIOEMPRESAGRUPO.ASPX", BiblioPMS.aplicacaoSEG, usuAut.Login);
                if (perm.Equals('N'))
                    Response.Redirect("Inicio.aspx");


                if (Request["codUsu"] != null && Request["codemp"] != null)
                {
                    codUsu = Criptografia.Descriptografar(Request["codUsu"]);
                    lblUsuario.Text = Usu.ObterNomeUsuario(codUsu, usuAut.Login);
                    cod_emp = Criptografia.Descriptografar(Request["codemp"]);
                    lblEmpresa.Text = Empresa.PesquisarNome(usuAut.Login, cod_emp);
                }

                if (!Page.IsPostBack)
                {
                    hplVoltar.NavigateUrl = "UsuarioEmpresa.aspx?codUsu=" + Server.UrlEncode(Criptografia.Criptografar(codUsu));
                    PreencherControles();
                }                

            }

        }

        private void PreencherControles()
        {
            PreencherListGrupos();
            PreencherListGrupoEmpresaUsuario();
        }

        private void PreencherListGrupoEmpresaUsuario()
        {
            try
            {
                listGrupoEmpresaUsu.Items.Clear();

                List<Grupo> listGrp = Grupo.ObterGruposVinculados(usuAut.Login, codUsu, cod_emp);

                if (listGrp != null)
                {
                    foreach (Grupo objGrp in listGrp)
                    {
                        ListItem item = new ListItem(objGrp.Nom_grp, objGrp.Cod_grp);
                        listGrupoEmpresaUsu.Items.Add(item);
                    }
                }

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        private void PreencherListGrupos()
        {
            try
            {
                listGrupos.Items.Clear();

                List<Grupo> listGrp = Grupo.ObterGruposNVinculados(usuAut.Login, codUsu, cod_emp);

                if (listGrp != null)
                {
                    foreach (Grupo objGrp in listGrp)
                    {
                        ListItem item = new ListItem(objGrp.Nom_grp, objGrp.Cod_grp);
                        listGrupos.Items.Add(item);
                    }
                }

            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {

            try
            {
                List<Empresa_Grupo_Usuario> listUsuGrpUsu = new List<Empresa_Grupo_Usuario>();

                foreach (ListItem item in listGrupos.Items)
                {
                    if (item.Selected)
                    {
                        Empresa_Grupo_Usuario objEmpGrpUsu = new Empresa_Grupo_Usuario(cod_emp, codUsu, item.Value);
                        listUsuGrpUsu.Add(objEmpGrpUsu);
                    }
                }


                if (listUsuGrpUsu != null)
                    Empresa_Grupo_Usuario.Inserir(usuAut.Login, listUsuGrpUsu);

                listGrupoEmpresaUsu.Items.Clear();

                PreencherListGrupoEmpresaUsuario();

                listGrupos.Items.Clear();

                PreencherListGrupos();
            }

            catch (Exception ex)
            {

                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }

        }

        protected void btnRemove_Click(object sender, EventArgs e)
        {
            try
            {
                List<Empresa_Grupo_Usuario> listUsuGrpUsu = new List<Empresa_Grupo_Usuario>();

                foreach (ListItem item in listGrupoEmpresaUsu.Items)
                {
                    if (item.Selected)
                    {
                        Empresa_Grupo_Usuario objEmpGrpUsu = new Empresa_Grupo_Usuario(cod_emp, codUsu, item.Value);
                        listUsuGrpUsu.Add(objEmpGrpUsu);
                    }
                }


                if (listUsuGrpUsu != null)
                    Empresa_Grupo_Usuario.Excluir(usuAut.Login, listUsuGrpUsu);

                listGrupoEmpresaUsu.Items.Clear();

                PreencherListGrupoEmpresaUsuario();

                listGrupos.Items.Clear();

                PreencherListGrupos();               
            }

            catch (Exception ex)
            {

                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }
    }
}
